      //交换代码
     public void swap(Node []array,int left,int right){
        Node temp = array[left];
        array[left] = array[right];
        array[right] = temp;
    }
    public void partition(Node []array, int val){
        int less = -1;
        int more = array.length;
        int index = 0;
        while(index < more){
            //如果划分值和在数组中遍历到的元素相同时index下标向右移动
            if(array[index].val == val){
                index++;
                //在数组中标遍历到的元素比划分值小，index向后移动，遍历到的这个元素和小于区的后一位元素交换
                //index向后移动，小于区向后移动一位
            }else if(array[index].val < val){
                swap(array,index++,++less);
                //在数组中遍历到的元素比划值大，和大于区的前一个元素做交换，但是index下标不往后移动，因为交换之后是一个新值
                //然后这个新值和划分值进行比较
            }else if(array[index].val > val){
                swap(array,index,--more);
            }
        }
    }
     public Node returnSpaceLinked(int val){
        if(head == null){
            return null;
        }
        //建一个 和链表等长的数组
        Node []newArr = new Node[getLength(head)];
        Node cur = head;
        int index = 0;
        while(cur != null){
            newArr[index] = cur;
            cur = cur.next;
            index++;
        }
        partition(newArr,val);
        int i = 1;
        //连接链表
        for(;i<newArr.length;i++){
            newArr[i-1].next = newArr[i];
        }
        newArr[i-1].next = null;
        return newArr[0];
    }
